#ifndef __SCENEMANAGER_H__
#define __SCENEMANAGER_H__

#include "../include/CTypes.h"
#include "../include/ISceneManager.h"
#include "../DrawableFaceManager.h"
#include "../DebugVars.h"

class CSceneManager : public ISceneManager
{
protected:
	ISceneGenerator *sgen;
	I3DCameraSceneNode *Active3DCamera;
	I2DCameraSceneNode *Active2DCamera;
	CDrawableFaceManager *dem;
	CDebugVars *idbgvars;
public:
	CSceneManager(ISceneNodeBasicParamsDeclaration);
	virtual ~CSceneManager();

	virtual ISceneGenerator *GetSceneGenerator()				{	return sgen;	}
	virtual IDrawableFaceManager *GetDrawableFaceManager();
	virtual void Render(IDrawableFaceManager *dfm);
	virtual u32 RenderAll(u32 Time);
	virtual void SetActive3DCamera(I3DCameraSceneNode *newac);
	virtual I3DCameraSceneNode *GetActive3DCamera()				{	return Active3DCamera;	}
	virtual void SetActive2DCamera(I2DCameraSceneNode *newac);
	virtual I2DCameraSceneNode *GetActive2DCamera()				{	return Active2DCamera;	}
	virtual IDebugVars *GetDebugVars()							{	return idbgvars;		};

	virtual void UpdateNode();
	virtual void OnRender();

	// Animators
	virtual void AddMoveAnimator(ISceneNode *Node,vector3dvpos PosIni,vector3dvpos PosFin,u32 Time);
	virtual void AddRotationAnimator(ISceneNode *Node,vector3dvpos RotIni,vector3dvpos RotFin,u32 Time);
	virtual void AddScalatorAnimator(ISceneNode *Node,vector3dvpos ScalIni,vector3dvpos ScalFin,u32 Time);
};

#endif
